package thread_01;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class Demo30 {
    public static void main(String[] args) {
//        满了会阻塞
        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(1000);

//        消费者
        Thread t1 = new Thread(() ->{
                try {
                    while (true){
                    Integer value = queue.take();
                        System.out.println("t1消费：" + value);
                        Thread.sleep(1000);
                    }
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
        });

//        生产者
        Thread t2 = new Thread(() ->{
            try {
                int count  = 0;
                while(true){
                    queue.put(count);
                    System.out.println("t2生产：" + count);
                    count++;
                }
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        });

//        Thread t3 = new Thread(() ->{
//            try {
//                int count  = 0;
//                while(true){
//                    queue.put(count);
//                    System.out.println("t3生产：" + count);
//                    count++;
////                    每隔一秒生产一个元素
//                    Thread.sleep(1000);
//                }
//            }catch (InterruptedException e){
//                e.printStackTrace();
//            }
//        });

        t1.start();
        t2.start();
//        t3.start();
    }
}
